﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using Telecom.Service;
using TelecomGis.Framework.Control;
using TelecomGis.Helper.Control;
using TelecomGis.Helper.Member;
using TelecomGis.Models;

namespace TelecomGis.Controllers
{
    public class SildeModelImages
    {
        public IEnumerable<string> Images { get; set; }
    }

    public class AccountController : ContronllerBase
    {
        public readonly UserSer _IUser = new UserSer();
        private readonly UTAuthenticationService authenticationService = new UTAuthenticationService();

        //
        // GET: /Account/

        public ActionResult SildeLogin()
        {
            var model = new SildeModelImages()
            {
                Images = Directory.EnumerateFiles(Server.MapPath("~/Content/SildeLogin"))
                                  .Select(fn => "~/Content/SildeLogin/" + Path.GetFileName(fn))
            };

            return PartialView(model);
        }

        public ActionResult Login(string returnUrl)
        {
            LoginModel model = new LoginModel();
            model.returnUrl = returnUrl;
            model.RememberMe = true;
            return View(model);
        }

        [HttpPost]
        public ActionResult Login(LoginModel model)
        {
            if (string.IsNullOrEmpty(model.UserName))
            {
                return JsonError("Vui lòng nhập tên đăng nhập");
            }

            if (string.IsNullOrEmpty(model.Password))
            {
                return JsonError("Vui lòng nhập mật khẩu");
            }

            var entity = _IUser.LogIn(model.UserName, model.Password);

            if (entity != null)
            {
                authenticationService.LogIn(model.UserName, false);
                return JsonSuccess("/Home/Index");
            }
            else
            {
                return JsonError("Thông tin đăng nhập sai. vui lòng xem lại !.");
            }

        }


        public ActionResult Logout()
        {
            authenticationService.LogOut();
            UTContextgis ut = new UTContextgis();
            ut.LogOut();
            ut = null;
            Session.Abandon();
            HttpCookie cookie_clear = new HttpCookie(FormsAuthentication.FormsCookieName, "");
            cookie_clear.Expires = DateTime.Now.AddYears(-1);
            Response.Cookies.Add(cookie_clear);
            return RedirectToAction("Login");
        }

        public ActionResult ChangePassword()
        {
            ChangePass model = new ChangePass();
            model.UserName = UtContextgis._UserPageContext.users.USERNAME;
            return PartialView("_ChangePassword", model);
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult ChangePassModel(ChangePass model)
        {
            //if (string.IsNullOrEmpty(model.UserName))
            //{
            //    return JsonError("Vui lòng nhập tên đăng nhập");
            //}

            if (string.IsNullOrEmpty(model.PasswordOld))
            {
                return JsonError("Vui lòng nhập mật khẩu hiện tại");
            }

            if (string.IsNullOrEmpty(model.PasswordNew))
            {
                return JsonError("Vui lòng nhập mật khẩu mới");
            }

            if (string.IsNullOrEmpty(model.PasswordNewConfirm))
            {
                return JsonError("Vui lòng nhập lại mật khẩu mới");
            }

            if (model.PasswordNew != model.PasswordNewConfirm)
            {
                return JsonError("Mật khẩu mới và nhập lại mật khẩu không trùng khớp");
            }

            var itemcheck = _IUser.LogIn(model.UserName, model.PasswordOld);
            if (itemcheck == null)
            {
                return JsonError("Mật khẩu cũ nhập không đúng ?");
            }
            else
            {
                itemcheck.PASSWORD = model.PasswordNew;
                _IUser.addOrupdate(itemcheck);
            }


            return JsonSuccess("");


        }

    }
}
